Nowadays, applications can be found ubiquitously, from calculator programs on computers to stock transaction systems. In the ordinary development of the computer programs, however, build plays an important role. Build refers to the complete process of parsing source codes and producing object codes and binary codes with a compiler. In the build of a large application (such as an ordinary driver), developers have to wait a period of time, perhaps, several hours or even days.
At present, it is common for developers to shorten build time by using parallel build techniques. For instance, gmake is a kind of program compiler tool from Linux, which is used with makefiles for program compiling. A makefile is a build file in a shared file system, an underlying file of an application, which is present along with the application after writing of the application. An execution sequence of various commands of the application is stored in the makefile. Taking gmake −4 as an example, gmake −4 can fetch 4 commands simultaneously to execute them in parallel. For example, gmake fetches 4 commands according to a command execution sequence in makefile and then executes in parallel, when commands are finished executing in a branch, a next command is fetched to execute on that branch, so that build efficiency can be improved.
However, there are some issues in parallel builds. For example, no problems may occur in serial build of an application, while its parallel build may be unsuccessful. A reason of such a problem is that, for example, some commands read/write on one and the same file, with an unapparent reading/writing relationship between the two files. Therefore, it is difficult for gmake to recognize such a condition when commands are fetched according to the command sequence in the makefile, leading to the parallel execution of a previous command and a command depending on the reading/writing on a certain file of the previous command, even execution of the command before the previous command. When such a problem occurs, it is very difficult to trace. Developers typically have to spend a long period of time to investigate and eliminate such a problem.
In order to trace and debug sources for errors that occur in parallel builds, in the prior art, error trace and debug tools have been developed for parallel build tools from different manufactures. These tools, however, do not have generality. Further, some of the tools cannot completely eliminate errors caused by command disorder execution.